package com.it.entity.report;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * <p>
 * 农户报案表（灾祸发生后报案记录）
 * </p>
 *
 * @author sunwz
 * @since 2025年09月19日
 */
@Getter
@Setter
@Accessors(chain = true)
@TableName("ai_claim_report")
public class AiClaimReport implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 报案唯一ID（编码规则：REPORT+日期+6位序列号）
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;

    /**
     * 报案号ID
     */
    @TableField("report_no")
    private String reportNo;

    /**
     * 关联保单编号（关联投保单表）
     */
    @TableField("policy_id")
    private String policyId;

    /**
     * 关联投保人ID（关联农户信息表）
     */
    @TableField("insured_id")
    private String insuredId;

    /**
     * 报案时间
     */
    @TableField("report_time")
    private LocalDateTime reportTime;

    /**
     * 灾祸类型（1-暴雨、2-洪水、3-病虫害、4-疫病、5-其他）
     */
    @TableField("disaster_type")
    private String disasterType;

    /**
     * 灾祸发生时间
     */
    @TableField("disaster_occur_time")
    private LocalDateTime disasterOccurTime;

    /**
     * 灾祸发生地点（精确到地块/养殖场）
     */
    @TableField("disaster_location")
    private String disasterLocation;

    /**
     * 农户描述损失情况（如：玉米倒伏约5亩，茎秆折断率80%）
     */
    @TableField("loss_description")
    private String lossDescription;

    /**
     * 农夫预估损失金额（农户自行估算，元）
     */
    @TableField("loss_estimate")
    private BigDecimal lossEstimate;

    /**
     * 报案人姓名（默认与投保人一致）
     */
    @TableField("reporter_name")
    private String reporterName;

    /**
     * 报案人联系电话
     */
    @TableField("reporter_phone")
    private String reporterPhone;

    /**
     *  调度是否分配外包人员
     * */
    @TableField("work_out_status")
    private Integer workOutStatus;

    /**
     * 报案状态（1-待受理、2-待调度、3-待查勘、4-待立案，5-已立案，6-已驳回）
     */
    @TableField("report_status")
    private Integer reportStatus;

    /**
     * 驳回原因（仅当report_status=4时填写）
     */
    @TableField("reject_reason")
    private String rejectReason;

    /**
     * 报案受理员工号（保险公司内部员工，关联系统用户表）
     */
    @TableField("report_work_no")
    private String reportWorkNo;

    /**
     * 受理时间
     */
    @TableField("handle_time")
    private LocalDateTime handleTime;


}
